/*
 * Copyright 2010 Michael Nitsche
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package de.mnit.schnipsel.div;

import de.mnit.basis.daten.FormatText;
import de.mnit.basis.daten.MN;
import de.mnit.basis.daten.struktur.S_Folge;
import de.mnit.basis.daten.typ.zeit.S_Zeitpunkt;
import de.mnit.basis.fehler.system.F_Sys_Datei;
import de.mnit.basis.fehler.system.F_Sys_Sicherheit;
import de.mnit.basis.netz.html.HtmlSchnell;
import de.mnit.basis.swt.dialog.SWT_Dialog;
import de.mnit.basis.swt.dialog.SWT_Fehler;
import de.mnit.basis.sys.datei.DSDatei;
import de.mnit.basis.sys.datei.S_Datei;
import de.mnit.basis.sys.sprache.S;
import de.mnit.schnipsel.db.B_Schnipsel;
import de.mnit.schnipsel.db.DBManager;

/**
 * @author Michael Nitsche
 * 12.05.2010	Erstellt
 */
public class HTML_Export {

	private static final S s=new S(HTML_Export.class);


	public void export(Integer ordner) {
		Boolean crypt=SWT_Dialog.frage_JaNein(s.t("Verschlüsselte Einträge auch exportieren?"));

		String[] datei=SWT_Dialog.frage_DateiSpeichern(s.t("Ziel-Datei auswählen"), "*.html", "*.htm");
		if(datei==null || datei.length!=1 || datei[0]==null)
			return;
		try {
			generator(DSDatei.neu(datei[0]), MN.istTrue(crypt), ordner);
			SWT_Dialog.hinweis(s.t("Daten wurden als HTML exportiert"));
		}
		catch(F_Sys_Datei e) {
			SWT_Fehler.zeig(e, false);
		}
		catch(F_Sys_Sicherheit e) {
			SWT_Fehler.zeig(e, false);
		}
	}

	// INTERN

	private void generator(S_Datei ziel, boolean crypt, Integer ordner) throws F_Sys_Datei, F_Sys_Sicherheit {
		S_Folge<B_Schnipsel> alle=DBManager.schnipsel().gAlleB(crypt, ordner);
		HtmlSchnell html=new HtmlSchnell(ziel.schreiben(), s.t("HTML-Schnipsel"));
		for(B_Schnipsel b : alle)
			template(html, b);
		html.schliessen();
	}

	private void template(HtmlSchnell html, B_Schnipsel b) {
		html.schreib(templateKopf(b.TITEL.g(), b.ERSTELLT.g(), b.GEAENDERT.g(), b.KLICKS.g()));
		html.schreib(templateRumpf(b.TEXT.g()));
	}

	private String templateKopf(String titel, S_Zeitpunkt erstellt, S_Zeitpunkt geaendert, int klicks) {
		titel=FormatText.zuHTMLZeichen(titel);
		String tErstellt=s.t("Erstellt");
		String tAenderung=s.t("&Auml;nderung");
		return "<table border=0 cellpadding=0 cellspacing=0 bgcolor=#aaaaff width=600>\n"
			+"<tr>\n<td align=center><font size=+1><strong>"+titel+"</strong></font></td>\n</tr>\n"
			+"<tr>\n<td align=center><font size=-2>"+tErstellt+": "+erstellt+" - "+tAenderung+": "+geaendert+"</font></td>\n</tr>\n" //+" - Klicks: "+klicks+"</tr>\n"
			+"</table>\n<br>";
	}

	private String templateRumpf(String text) {
		text=FormatText.zuHTMLZeichen(text);
		text=text.replaceAll("\n", "<br>");
		return text+"\n<br><br><br>\n";
	}
}
